<?php
/**
 * 行业类型控制器
 */

declare (strict_types = 1);

namespace app\controller\home;

use app\BaseController;
use think\facade\Db;
use think\facade\Request;

class Industry extends BaseController
{
    /**
     * 获取行业类型列表
     */
    public function list()
    {
        try {
            // 查询行业类型列表
            $list = Db::name('industry')
                ->order('id', 'asc')
                ->select()
                ->toArray();
            
            // 格式化时间
            foreach ($list as &$item) {
                $item['create_time_format'] = date('Y-m-d H:i:s', $item['create_time']);
                $item['update_time_format'] = date('Y-m-d H:i:s', $item['update_time']);
                
                // 状态名称
                $statusNames = [
                    -1 => '删除',
                    0 => '禁用',
                    1 => '启用'
                ];
                $item['status_name'] = isset($statusNames[$item['status']]) ? $statusNames[$item['status']] : '未知';
            }
            
            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $list
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '查询失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 查看行业详情
     */
    public function view()
    {
        try {
            $param = Request::param();
            
            if (empty($param['id'])) {
                return json(['code' => 400, 'msg' => '参数错误']);
            }
            
            // 查询行业详情
            $industry = Db::name('industry')
                ->where('id', $param['id'])
                ->find();
            
            if (empty($industry)) {
                return json(['code' => 404, 'msg' => '行业不存在']);
            }
            
            $industry['create_time_format'] = date('Y-m-d H:i:s', $industry['create_time']);
            $industry['update_time_format'] = date('Y-m-d H:i:s', $industry['update_time']);
            
            // 状态名称
            $statusNames = [
                -1 => '删除',
                0 => '禁用',
                1 => '启用'
            ];
            $industry['status_name'] = isset($statusNames[$industry['status']]) ? $statusNames[$industry['status']] : '未知';
            
            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $industry
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '查询失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 新建行业
     */
    public function add()
    {
        $param = Request::param();
        
        // 数据验证
        if (empty($param['title'])) {
            return json(['code' => 400, 'msg' => '行业名称不能为空']);
        }
        
        $data = [
            'title' => $param['title'],
            'status' => $param['status'] ?? 1,
            'create_time' => time(),
            'update_time' => time()
        ];
        
        try {
            // 新增行业
            $industryId = Db::name('industry')->insertGetId($data);
            
            return json(['code' => 0, 'msg' => '保存成功', 'data' => ['id' => $industryId]]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '保存失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 编辑行业
     */
    public function edit()
    {
        $param = Request::param();
        
        // 数据验证
        if (empty($param['id'])) {
            return json(['code' => 400, 'msg' => '参数错误']);
        }
        
        if (empty($param['title'])) {
            return json(['code' => 400, 'msg' => '行业名称不能为空']);
        }
        
        // 检查行业是否存在
        $industry = Db::name('industry')
            ->where('id', $param['id'])
            ->find();
        
        if (empty($industry)) {
            return json(['code' => 404, 'msg' => '行业不存在']);
        }
        
        $data = [
            'id' => $param['id'],
            'title' => $param['title'],
            'status' => $param['status'] ?? $industry['status'],
            'update_time' => time()
        ];
        
        try {
            // 更新行业
            Db::name('industry')->update($data);
            
            return json(['code' => 0, 'msg' => '更新成功', 'data' => ['id' => $param['id']]]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '更新失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 删除行业
     */
    public function del()
    {
        $param = Request::param();
        
        // 数据验证
        if (empty($param['id'])) {
            return json(['code' => 400, 'msg' => '参数错误']);
        }
        
        // 检查行业是否存在
        $industry = Db::name('industry')
            ->where('id', $param['id'])
            ->find();
        
        if (empty($industry)) {
            return json(['code' => 404, 'msg' => '行业不存在']);
        }
        
        try {
            // 软删除行业
            Db::name('industry')
                ->where('id', $param['id'])
                ->update([
                    'status' => -1,
                    'update_time' => time()
                ]);
            
            return json(['code' => 0, 'msg' => '删除成功']);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '删除失败: ' . $e->getMessage()]);
        }
    }
    
    /**
     * 设置行业类型（获取启用的行业列表用于下拉选择）
     */
    public function set()
    {
        try {
            $list = Db::name('industry')
                ->where('status', 1)
                ->order('id', 'asc')
                ->select()
                ->toArray();
            
            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $list
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '获取失败: ' . $e->getMessage()]);
        }
    }
}